#pragma once
#include <string>
#include "IMoveable.h"

namespace bs
{
	class Game;
	class Animation;
	struct NpcCfg;

	class Npc : public IMoveable
	{
	public:
		Npc(Game& game);
		~Npc();

		virtual void OnReachEdge();

		bool Init(const NpcCfg& cfg, bool left, bool bullet, bool explodeAble = true);
		void Update(int elapse, float speedFactor);
		void Draw(HDC dc);

		void Die();
		bool IsDead() { return this->dead; }

	private:
		int fireDelay;
		int fireDelayCounter;
		std::string bullet;
		std::string explode;
		std::string explodeSnd;

		bool isBullet;
		bool canExplode;
		bool dead;

		Animation* anim;

		Game& game;
	};

}
